﻿// 505 小蜗的疑问.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <unordered_map>
#include <cstring>
using namespace std;

/*
http://oj.daimayuan.top/course/7/problem/485

给你两个字符串 a,b，a和 b都由小写字母构成。

小蜗想知道字符串 b在 a中出现了几次（出现位置可以重叠）。

输入格式
第一行两个整数 n,m，分别表示 a和 b的长度。

接下来两行，分别给出字符串 a和 b。

输出格式
输出一行一个数，表示答案。

样例输入
7 2
aaaabaa
aa
样例输出
4
数据规模
对于 100%的数据，保证 1≤n,m≤200000。
*/
const int N = 200010, P = 131;
int n, m;
char a[N], b[N];
unsigned long long h[N], p[N];

unsigned long long gethash(int l, int r) {
	return h[r] - h[l] * p[r-l];
}


int main()
{
	cin >> n >> m >> a+1 >> b+1;
	p[0] = 1;
	for (int i = 1; i <= n; i++) {
		h[i] = h[i - 1] * P + a[i];
		p[i] = p[i - 1] * P;
	}

	unsigned long long hashb = 0;
	for (int i = 1; i <= m; i++) {
		hashb = hashb * P + b[i];
	}
	int ans = 0;
	for (int i = m; i <= n; i++) {
		unsigned long long tmpHash = gethash(i-m,i);
		if (tmpHash == hashb) { ans++; }
	}

	cout << ans << endl;

	 
	return 0;
}
